#ifndef DATO_H_
#define DATO_H_

#include <string>
#include <sstream>

using namespace std;

namespace Toolkit
{

class Dato
{
public:
    Dato(){

    }
    virtual ~Dato(){

    }

	virtual void serializar(stringstream&) const = 0;
	virtual void hidratar(stringstream&) = 0;
	
	/**
     * Devuelve una nueva instancia del dato, con igual contenido.
     * La memoria es responsabilidad del que llama el método.
     * */
    virtual Dato* clonar() const = 0;
	
};

}

#endif /* DATO_H_ */
